package com.unism.util;

/**
 * @author Administrator
 *初始化配置页面的基本信息
 */
public  class PageUtil{

	private static final long serialVersionUID = 19000101123412L;
	public static String queryStartKey = "_qStart" ;
	public static String queryCountKey = "_qCount" ;
	/** 每页默认显示的行数 */
	public static Integer Defaultrows;
	/** 自定义每页显示的行数*/
	private Integer customizeRows ;
	/** 是否应用 自定义每页显示的行数 */
	private Boolean enableCustomizePageSize ;
	/** 记录总数 */
	private Long totalRecord;
	/** 当前页 */
	private Integer page;
	/** 总页数 */
	private Integer pageTotal;
	/** true 代表是第一访问 ，false代表非第一次访问 */
	private boolean firstTime = true ;
	/** 默认加载配置文件 */
	static{
		loadDefaultPageSize() ;
	}
	
	public void firstRequest(){
		this.setFirstTime(false);
	}
	
	public static void loadDefaultPageSize(){
//		String ps = null ;
//		try{
//			Class config = Class.forName("com.unism.util.Config") ;
//			if(config != null){
//				Method[] ms = config.getMethods() ;
//				if(ms != null){
//					for(int i = 0 ; i < ms.length ; i++){
//						if(ms[i].getName().equals("getConfig")){
//							ps = (String)ms[i].invoke(config , "sys.pageSize") ;
//							break ;
//						}
//					}
//				}
//			}
//		}catch(Exception e){
//			e.printStackTrace() ;
//		}
//		if(ps != null){
//			rows = Integer.parseInt(ps) ;
//		}else{
//			rows = 20 ;//报异常
//		} 
		Defaultrows=Constant.rows;
	}
	/**
	 * 功能：更新页面中的总记录数
	 * @param totalRecord
	 */
	public void updateTotalRecord(Long totalRecord) {
		if(totalRecord == null){
			totalRecord = 0L ;
		}
		//每页显示多少条记录数（如果customizePageSize不合法时采用默认值）
		Integer customizePageSize = getCustomizeRows();
       //获取当前页
		Integer page = getPage();
		Integer pageTotal =null;
		//总页数
		pageTotal = (int)Math.ceil((double)totalRecord/customizePageSize);	
		if (pageTotal<=0) {
			pageTotal = 1;
		}
		Integer start=getQueryStart();
		setTotalRecord(totalRecord);
		setPageTotal(pageTotal);
		setCustomizeRows(customizePageSize) ;
		
	}


/**
 * 功能：获得起始记录数
 * @return
 */
	public  int getQueryStart() {
		long l = (getPage() - 1) ;
		l = l * getCustomizeRows() ;
		if(l < 0){
			l = 0 ;
		}
		return new Long(l).intValue();
	}
	/**
	 * 功能：获取实际每页的记录数
	 * @return
	 */
	public int  getQueryCount() {
		Integer size = getCustomizeRows() ;
				
		return new Long(getPage() == getPageTotal() ? 
				(getTotalRecord() - (getPage() - 1) * size) : size).intValue();
	}

	public Integer getCustomizeRows() {
		return customizeRows;
	}

	public void setCustomizeRows(Integer customizeRows) {
		this.customizeRows = customizeRows;
	}

	public Boolean getEnableCustomizePageSize() {
		return enableCustomizePageSize;
	}

	public void setEnableCustomizePageSize(Boolean enableCustomizePageSize) {
		this.enableCustomizePageSize = enableCustomizePageSize;
	}

	public Long getTotalRecord() {
		return totalRecord;
	}

	public void setTotalRecord(Long totalRecord) {
		this.totalRecord = totalRecord;
	}

	public Integer getPage() {
		return page;
	}

	public void setPage(Integer page) {
		this.page = page;
	}

	public Integer getPageTotal() {
		return pageTotal;
	}

	public void setPageTotal(Integer pageTotal) {
		this.pageTotal = pageTotal;
	}

	public boolean isFirstTime() {
		return firstTime;
	}

	public void setFirstTime(boolean firstTime) {
		this.firstTime = firstTime;
	}
	public PageUtil(Integer page,Integer customizeRows){
		
		if (null == page || page <= 0) {
			this.page = 1;
		}else{
			this.page=page;
		}
		if (null == customizeRows || customizeRows <= 0) {
			this.customizeRows = Defaultrows;
		}else{
			this.customizeRows=customizeRows;
		}
		
		
	}

}

